home *** CD-ROM | disk | FTP | other *** search
/ The Atari Compendium / The Atari Compendium (Toad Computers) (1994).iso / files / prgtools / programm.ing / rsc2obj.lzh / RESOURCE / RSC_SOBJ.C < prev   
Encoding:
C/C++ Source or Header  |  1991-02-27  |  2.1 KB  |  76 lines

  1. #include <stddef.h>
  2. #include <aes.h>
  3.  
  4. #define FALSE 0
  5. #define TRUE  1
  6.  
  7. int rsrc_sobject(RSHDR *rsc, int re_gtype, int re_gindex, void *gaddr )
  8. {
  9.     switch (re_gtype)
  10.     {
  11.         case R_TREE     :
  12.             if ((re_gindex >= 0) && (re_gindex < rsc->rsh_ntree))
  13.             {
  14.                 ((OBJECT**)(rsc->rsh_trindex + (long)rsc))[re_gindex] = gaddr;
  15.                 return(TRUE);
  16.             }
  17.             break;
  18.         case R_OBSPEC   :
  19.             if ((re_gindex >= 0) && (re_gindex < rsc->rsh_nobs))
  20.             {
  21.                 (void*)((OBJECT*)(rsc->rsh_object + (long)rsc + sizeof(OBJECT)*re_gindex))->ob_spec.index = gaddr;
  22.                 return(TRUE);
  23.             }
  24.             break;
  25.         case R_TEPTEXT  :
  26.             if ((re_gindex >= 0) && (re_gindex < rsc->rsh_nted))
  27.             {
  28.                 ((TEDINFO*)(rsc->rsh_tedinfo + (long)rsc + sizeof(TEDINFO)*re_gindex))->te_ptext = gaddr;
  29.                 return(TRUE);
  30.             }
  31.             break;
  32.         case R_TEPTMPLT :
  33.             if ((re_gindex >= 0) && (re_gindex < rsc->rsh_nted))
  34.             {
  35.                 ((TEDINFO*)(rsc->rsh_tedinfo + (long)rsc + sizeof(TEDINFO)*re_gindex))->te_ptmplt = gaddr;
  36.                 return(TRUE);
  37.             }
  38.             break;
  39.         case R_TEPVALID :
  40.             if ((re_gindex >= 0) && (re_gindex < rsc->rsh_nted))
  41.             {
  42.                 ((TEDINFO*)(rsc->rsh_tedinfo + (long)rsc + sizeof(TEDINFO)*re_gindex))->te_pvalid = gaddr;
  43.                 return(TRUE);
  44.             }
  45.             break;
  46.         case R_IBPMASK  :
  47.             if ((re_gindex >= 0) && (re_gindex < rsc->rsh_nib))
  48.             {
  49.                 ((ICONBLK*)(rsc->rsh_iconblk + (long)rsc + 34UL*re_gindex))->ib_pmask = gaddr; /* 34 = (sizeof(ICONBLK)-2) */
  50.                 return(TRUE);
  51.             }
  52.             break;
  53.         case R_IBPDATA  :
  54.             if ((re_gindex >= 0) && (re_gindex < rsc->rsh_nib))
  55.             {
  56.                 ((ICONBLK*)(rsc->rsh_iconblk + (long)rsc + 34UL*re_gindex))->ib_pdata = gaddr; /* 34 = (sizeof(ICONBLK)-2) */
  57.                 return(TRUE);
  58.             }
  59.             break;
  60.         case R_IPBTEXT  :
  61.             if ((re_gindex >= 0) && (re_gindex < rsc->rsh_nib))
  62.             {
  63.                 ((ICONBLK*)(rsc->rsh_iconblk + (long)rsc + 34UL*re_gindex))->ib_ptext = gaddr; /* 34 = (sizeof(ICONBLK)-2) */
  64.                 return(TRUE);
  65.             }
  66.             break;
  67.         case R_BIPDATA  :
  68.             if ((re_gindex >= 0) && (re_gindex < rsc->rsh_nbb))
  69.             {
  70.                 ((BITBLK*)(rsc->rsh_bitblk + (long)rsc + sizeof(BITBLK)*re_gindex))->bi_pdata = gaddr;
  71.                 return(TRUE);
  72.             }
  73.     }
  74.     return(FALSE);
  75. }
  76.